The Distribution Nodelist by Ben Baker, 100/76 Copyright (c) 1986, International FidoNet Association. All rights reserved. Duplication and or distribution permitted for noncommercial purposes only. This document defines the format and content of the FidoNet nodelist as published each Friday by the International FidoNet Association's International Coordinator. FidoNet is an international network of independently owned electronic mail systems, most with interlocking electronic bulletin board systems. The distribution nodelist, or simply "nodelist," is the glue which holds the network together. It is FidoNet's "phone book" and it defines the top-level network structure. The nodelist is published as an ASCII text file named NODELIST.nnn, where nnn is the day-of-year of the Friday publication date. A companion file, COORD.nnn, lists the coordinators of the various regions and local networks which constitute FidoNet. These files are packed into an archive file (by System Enhancement Associates' ARC utility) named NODELIST.Ann, where nn are the last two digits of day-of-year. As stated above, NODELIST.nnn is an ASCII text file. It contains two kinds of lines, comment lines and data lines. Each line is terminated with an ASCII carriage return and line feed character sequence. The file is terminated with an end-of-file character (EOF - decimal character value - 26). Comments lines contain a semicolon (;) in the first character position followed by zero or more alphabetic characters called "interest flags." A program which processes the nodelist may use comment interest flags to determine the disposition of a comment line. The remainder of a comment line (with one exception, treated below) is free-form ASCII text. There are four interest flags defined as follows: ;S This comment is of particular interest to System Operators. ;U This comment is of particular interest to end users. ;F This comment should appear in any formatted "Fido List." ;A This comment is of general interest (shorthand for ;SUF). ; This comment may be ignored by a nodelist processor. The first line of a nodelist is a special comment line containing identification data for the particular edition of the nodelist. The following is an example of the first line of a nodelist: ;A Friday, August 1, 1986 -- Day number 213 : 05060 This line contains the general interest flag, the day, date and day-of-year number of publication, and ends with a 5-digit decimal number with leading zeroes, if necessary. This number is the decimal representation of a check value derived as follows: Beginning with the first character of the second line, a 16-bit cyclic redundancy check (CRC) is calculated for the entire file, including carriage return and line feed characters, but not including the terminating EOF character. The check polynomial used is the same one used for many file transfer protocols: 2**16 + 2**12 + 2**5 + 2**0 The CRC may be used to verify that the file has not been edited. The importance of this will become evident in the discussion of NODEDIFF, below. CRC calculation techniques are well documented in the literature, and will not be treated further here. The content of the remaining comments in the nodelist are intended to be informative. Beyond the use of interest flags for distribution, a processing program need not have any interest in them. A nodelist data line contains seven variable length "fields" separated by commas (,). No space characters are allowed in a data line, and underscore characters (_) are used in lieu of spaces. The following discussion defines the contents of each field in a data line. Field 1: Key-word The keyword field may be empty, or may contain one of the following: Region -- begins the definition of a geographic region and defines its coordinator. All the data lines following a line with the Region keyword down to, but not including the next occurrence of a Region or Host line, are independent nodes within the defined region. Host -- begins the definition of a local network and defines its Host. All the data lines following a line with the Host keyword down to, but not including the next occurrence of a Region or Host line, are local nodes, members of the defined local network. The difference between a region and a local network is in the routing of messages. A message addressed to a member of a region is sent direct to the addressee, while a message to a member of a local network is sent to the network host. Hub -- begins the definition of a routing sub-unit within a multilevel local network. The Hub is the routing focal point for nodes listed below it until the next occurrence of a Hub, Region or Host keyword. The Hub entry must be a redundant entry for one of the nodes listed below it. Pvt -- defines a private node with unlisted number. Private nodes are only allowed as members of local networks. Hold -- defines a node which is temporarily down. Mail may be send to it and is held by its host or coordinator. Down -- defines a node which is not operational. Mail may NOT be sent to it. Kenl -- this places a node in the "dog house" and serves as a warning to a Fido about to be "excommunicated" for any reason. This node will not be placed in any internal representation of the nodelist, but may be listed as "excommunicated" in a formatted Fido list. -- defines a normal node entry. Field 2 - Net/Node number This field contains only numeric digits and is a number in the range of 0 to 32767. If the line had the Region or Host keyword, the number is the net or region number, and the node has an implied node number of 0. Otherwise, the number is the node number. The region or net number and the node number, taken together, constitutes a node's FidoNet address. Field 3 - Node name This field may contain any characters except spaces. Underscores are used to represent spaces. This is the name by which the node is known. Field 4 - Sysop name This field may contain any characters except spaces. Underscores are used to represent spaces. This is the name of the system operator. Field 5 - Phone number This field contains at least three and usually four numeric subfields separated by dashes (-). The fields are country code (1 for USA and Canada), city or area code, exchange code and number. The various parts of the phone number are frequently used to derive cost and routing information, as well as what number is to be dialed. A typical example of the data in a phone number field is 1-800-555-1212, corresponding to country 1 (USA), area 800 (inward WATS), exchange 555 and number 1212. Alternatively, this field may contain the notation "-Unpublished-" in the case of a private node. Field 6 - Baud rate This field contains one of the values: 300, 1200, 2400, 4800 or 9600, and defines the maximum baud rate supported by the node. Field 7 - Flags This optional field contains data about the specific operation of the node, such as special hours, modem protocol supported, etc. Any text following the sixth comma on a data line is taken collectively to be the flags field. For this reason, it may contain any characters including spaces and even commas. It has a recommended format, but that format is not now guaranteed. The recommended format is zero or more subfields separated by commas consisting of a flag code, followed by a color (:), possibly followed by a value. The following codes are used to define operating hours: Code Meaning DA: Daily WK: Week days WE: Week ends SU: Sundays SA: Saturdays MO: Mail Only The following codes define special operating conditions: Code Meaning RE: Node exercises some access restrictions. XP: Node that supports the extended protocol which means it supports file request and update request. The following codes define modem protocols supported: Code Meaning CT1: 300 baud CCITT (V21) CT2: 1200/75 split baudrate viewdata mode (V23) CT3: 1200 baud full duplex bell compatible (V22) CT4: 2400 baud full duplex (V22bis) The following are examples of nodelist data lines: Host,102,SOCALNET,Los_Angeles_CA,Richard_Martz,1-213-874-9484,2400,XP: ,101,Rainbow_Data,Culver_City_CA,Don_Brauns,1-213-204-2996,2400, With more than a thousand nodes, the nodelist, even in archive form, is a substantial document (or file). Since distribution is via electronic file transfer, this file is NOT routinely distributed. Instead, when a new nodelist is prepared, it is compared with the previous week's nodelist, and a file containing only the differences is created and distributed. The distribution file, called NODEDIFF.nnn, where nnn is the day-of-year of publication, is actually an editing script which will transform the previous week's nodelist into the current nodelist. A definition of its format follows: The first line of NODEDIFF.nnn is an exact copy of the first line of LAST WEEK'S nodelist. This is used as a first-level confidence check to insure that the right file is being edited. The second and subsequent lines are editing commands and editing data. There are three editing commands and all have the same format: is a 1-letter command; A, C or D. is a decimal number greater than zero, and defines the number of lines to be operated on by the command. Each command appears on a line by itself. The commands have the following meanings: Ann - Add the following nn lines to the output file. Cnn - Copy nn lines from the input to the output file. Dnn - Delete (or skip) nn lines from the input file. The following illustrate how the first few lines of NODEDIFF.213 might look: ;A Friday, July 25, 1986 -- Day number 206 : 27712 D2 A2 ;A Friday, August 1, 1986 -- Day number 213 : 05060 ;A C5 This fragment illustrates all three editing commands. The first line is the first line from NODELIST.206. The next line says "delete the first two lines from NODELIST.206. These are the identification line and the line following it. The next command says "add the next two lines to NODELIST.213. The two data lines are followed by a command which says "copy five unchanged lines from NODELIST.206 to NODELIST.213. Notice that the first line added will ALWAYS contain the new nodelist's CRC. Since only the differences will be distributed, it is important to insure the accuracy of the newly created nodelist. This is the function of the CRC mentioned above. It is sufficient for a program designed to perform the above edits to pick the CRC value from the first line added to the output file, then compute the CRC of the rest of the output file. If the two CRCs do not agree, one of the input files has been corrupted. If they do agree, the probability is very high (but not 100%) that the output file is accurate. For actual distribution, NODEDIFF.nnn and COORD.nnn are packed into an archive file named NODEDIFF.Ann, where nn are the last two digits of day-of-year.